return {
    { "github/copilot.vim" },

    -- add this to the file where you setup your other plugins:
    -- {
    -- "monkoose/neocodeium",
    -- event = "VeryLazy",
    -- config = function()
    -- local neocodeium = require("neocodeium")
    -- neocodeium.setup()
    -- vim.keymap.set("i", "<A-f>", neocodeium.accept)
    -- end,
    -- },

    -- {
    -- "luozhiya/fittencode.nvim",
    -- config = function()
    -- local fitten = require("fittencode")
    -- fitten.setup({
    -- log = {
    -- level = vim.log.levels.TRACE,
    -- },
    -- })
    -- end,
    -- },
    {
        "neoclide/coc.nvim",
        branch = "release",
        build = "yarn install --frozen-lockfile",
        config = function()
            vim.cmd("autocmd FileType verilog let b:coc_pairs_disabled = ['`']")
            vim.opt.backup = false
            vim.opt.writebackup = false

            vim.g.coc_config_home = "~/.config/nvim"
            vim.opt.updatetime = 300
            vim.opt.hidden = true
            vim.opt.signcolumn = "yes"

            local keyset = vim.keymap.set
            function _G.check_back_space()
                local col = vim.fn.col(".") - 1
                return col == 0 or vim.fn.getline("."):sub(col, col):match("%s") ~= nil
            end

            local opts = { silent = true, noremap = true, expr = true, replace_keycodes = false }
            keyset(
                "i",
                "<cr>",
                [[coc#pum#visible() ? coc#pum#confirm() : "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"]],
                opts
            )
            keyset("i", "<M-k>", [[coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"]], opts)
            keyset(
                "i",
                "<M-j>",
                'coc#pum#visible() ? coc#pum#next(1) : v:lua.check_back_space() ? "<TAB>" : coc#refresh()',
                opts
            )

            -- GoTo code navigation
            keyset("n", "<space>gd", "<Plug>(coc-definition)", { desc = "coc-definition" })
            -- keyset("n", "<space>gy", "<Plug>(coc-type-definition)", { desc = coc - type - definition })
            keyset("n", "<space>gi", "<Plug>(coc-implementation)", { desc = "coc-implementation" })
            -- keyset("n", "<space>gr", "<Plug>(coc-references)", { desc = "coc-references" })
            keyset("n", "[g", "<Plug>(coc-diagnostic-prev)", { silent = true })
            keyset("n", "]g", "<Plug>(coc-diagnostic-next)", { silent = true })

            -- Use K to show documentation in preview window
            function _G.show_docs()
                local cw = vim.fn.expand("<cword>")
                if vim.fn.index({ "vim", "help", "lua" }, vim.bo.filetype) >= 0 then
                    vim.api.nvim_command("h " .. cw)
                elseif vim.api.nvim_eval("coc#rpc#ready()") then
                    vim.fn.CocActionAsync("doHover")
                else
                    vim.api.nvim_command("!" .. vim.o.keywordprg .. " " .. cw)
                end
            end
            keyset("n", "K", "<CMD>lua _G.show_docs()<CR>", { silent = true })

            vim.cmd([[
    hi link CocFloating DiffAdd

    call coc#add_extension(
    \ 'coc-calc', 
    \ 'coc-clangd', 
    \ 'coc-emoji',
    \ 'coc-pyright', 
    \ 'coc-rust-analyzer',
    \ 'coc-json', 
    \ 'coc-lists', 
    \ 'coc-marketplace',
    \ 'coc-pairs', 
    \ 'coc-snippets', 
    \ 'coc-syntax', 
    \ 'coc-tag', 
    \ 'coc-word'
    \ )
]])

            keyset(
                "n",
                "<space>cs",
                "<cmd>vs<cr><cmd>CocCommand clangd.switchSourceHeader<cr>",
                { desc = "switchSourceHeader" }
            )
            keyset("n", "<space>cr", "<cmd>CocRestart<cr>", { desc = "coc restart " })
            keyset("n", "<space>co", "<cmd>CocOutline<cr>", { desc = "coc outline" })
        end,
    },
}

--    command! SvBuildIndex call CocRequest("svlangserver", 'workspace/executeCommand', {'command': 'systemverilog.build_index'})
--    command! -range SvReportHierarchy call CocRequest("svlangserver", 'workspace/executeCommand', {'command': 'systemverilog.report_hierarchy', 'arguments': [input('Module/interface: ', <range> == 0 ? "" : expand("<cword>"))]})
